import { ref, reactive } from 'vue'
import { logout, updatepassword } from '@/api/administrator-manage/manager'
import { ElNotification, ElMessageBox } from 'element-plus'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { toast } from '../utils/tools'

export const useRepassword = () => {
  const router = useRouter()
  const store = useStore()
  // 修改密码
  const formDrawerRef = ref(null)
  const form = reactive({
    oldpassword: '',
    password: '',
    repassword: '',
  })

  const rules = {
    oldpassword: [
      {
        required: true,
        message: '旧密码不能为空',
        trigger: 'blur',
      },
    ],
    password: [
      {
        required: true,
        message: '新密码不能为空',
        trigger: 'blur',
      },
    ],
    repassword: [
      {
        required: true,
        message: '确认密码不能为空',
        trigger: 'blur',
      },
    ],
  }

  const formRef = ref(null)
  const onSubmit = () => {
    formRef.value.validate((valid) => {
      if (!valid) {
        return false
      }
      formDrawerRef.value.showLoading()
      updatepassword(form)
        .then(() => {
          ElNotification.success('修改密码成功，请重新登录')
          store.dispatch('logout')
          // 跳转回登录页
          router.push('/login')
        })
        .finally(() => {
          formDrawerRef.value.hideLoading()
        })
    })
  }

  const openRePasswordForm = () => formDrawerRef.value.open()

  return {
    formDrawerRef,
    form,
    rules,
    formRef,
    onSubmit,
    openRePasswordForm,
  }
}

export const useLogout = () => {
  const router = useRouter()
  const store = useStore()
  const handleLogout = () => {
    ElMessageBox.confirm('确定要退出登录吗？', '消息提示', {
      distinguishCancelAndClose: true,
      confirmButtonText: '确定',
      cancelButtonText: '取消',
    }).then(() => {
      logout().finally(() => {
        store.dispatch('logout')
        // 跳转回登录页
        router.push('/login')
        // 提示退出登录成功
        toast('退出登录成功')
      })
    })
  }

  return {
    handleLogout,
  }
}
